
/**
 * Write a description of class Seguro here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

import java.util.TreeMap;



public class Seguro
{

//Variáveis de Instância

private int codPessoa;
private TipoDeSeguro tipo;
private double preco;
private double agravamento;
private TreeMap<String,TreeMap<String,Clausula>> cls;


//Construtores

public Seguro() {
    codPessoa=0;
    tipo=new TipoDeSeguro();
    preco= 0.0;
    agravamento = 0.0;
    cls = new TreeMap<String,TreeMap<String,Clausula>>();
}

public Seguro (Seguro s) {
    codPessoa= s.getCodigo();
    tipo = s.getTipo();
    preco = s.getPreco();
    agravamento = s.getAgrav();
    cls = s.getClausulas();
}

public Seguro ( int code, TipoDeSeguro type, double price, double agrav, TreeMap<String,TreeMap<String,Clausula>> claus) {
    codPessoa= code;
    tipo = type;
    preco = price;
    agravamento = agrav;
    cls = claus;
}


//Métodos de Instãncia

public int getCodigo() {return codPessoa;}
public TipoDeSeguro getTipo() {return tipo;}
public double getPreco() {return preco;}
public double getAgrav() {return agravamento;}
public TreeMap<String,TreeMap<String,Clausula>> getClausulas() {

    TreeMap<String,TreeMap<String,Clausula>> aux = new TreeMap<String,TreeMap<String,Clausula>>();

    for ( String chave: cls.keySet()) {

        aux.put(chave, new TreeMap<String,Clausula>());
        
        for (Clausula c: cls.get(chave).values() ){

            aux.get(chave).values().add(c.clone());
                }
    }
    return aux;
}

public void setCodigo(int code) {codPessoa=code;}
public void setTipo(TipoDeSeguro type) {tipo=type;}
public void setPreco(double price) {preco=price;}
public void setAgrav(double agrav) {agravamento=agrav;}

public Seguro clone() {return new Seguro(this);}

public boolean equals(Object obj) {
        if(this == obj) return true;  // � o pr�prio
        if((obj == null) || (this.getClass() != obj.getClass())) return false;
        Seguro s = (Seguro) obj;
        return codPessoa==s.getCodigo() && tipo==s.getTipo() && preco==s.getPreco() && agravamento==s.getAgrav() 
                && cls==s.getClausulas();}

public String toString() {
        StringBuilder s = new StringBuilder();
        s.append("-----Seguro-----");
        s.append("Código Titular:" + codPessoa +"/n");
        s.append("Tipo:" + tipo + "/n"); 
        s.append("Preco:" + preco + "/n");
        s.append("Agraveamento em %:" + agravamento + "/n");
        return s.toString();}

public GrupoDeClausulas filtraClausulas(TreeMap<String,TreeMap<String,Clausula>> listaA){}



}